1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.buddyicon;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.purple.account;
34 import derelict.purple.blist;
35 import derelict.purple.imgstore;
36 import derelict.purple.prpl;
37 import core.stdc.time;
38 
39 extern (C):
40 
41 alias _PurpleBuddyIcon PurpleBuddyIcon;
42 
43 struct _PurpleBuddyIcon;
44 															
45 
46 version(Derelict_Link_Static)
47 {
48     extern( C ) nothrow 
49     {
50 	    PurpleBuddyIcon* purple_buddy_icon_new(PurpleAccount* account, const(char)* username, void* icon_data, size_t icon_len, const(char)* checksum);
51         PurpleBuddyIcon* purple_buddy_icon_ref(PurpleBuddyIcon* icon);
52         PurpleBuddyIcon* purple_buddy_icon_unref(PurpleBuddyIcon* icon);
53         void purple_buddy_icon_update(PurpleBuddyIcon* icon);
54         void purple_buddy_icon_set_data(PurpleBuddyIcon* icon, guchar* data, size_t len, const(char)* checksum);
55         PurpleAccount* purple_buddy_icon_get_account(const(PurpleBuddyIcon)* icon);
56         const(char)* purple_buddy_icon_get_username(const(PurpleBuddyIcon)* icon);
57         const(char)* purple_buddy_icon_get_checksum(const(PurpleBuddyIcon)* icon);
58         gconstpointer purple_buddy_icon_get_data(const(PurpleBuddyIcon)* icon, size_t* len);
59         const(char)* purple_buddy_icon_get_extension(const(PurpleBuddyIcon)* icon);
60         char* purple_buddy_icon_get_full_path(PurpleBuddyIcon* icon);
61         void purple_buddy_icons_set_for_user(PurpleAccount* account, const(char)* username, void* icon_data, size_t icon_len, const(char)* checksum);
62         const(char)* purple_buddy_icons_get_checksum_for_user(PurpleBuddy* buddy);
63         PurpleBuddyIcon* purple_buddy_icons_find(PurpleAccount* account, const(char)* username);
64         PurpleStoredImage* purple_buddy_icons_find_account_icon(PurpleAccount* account);
65         PurpleStoredImage* purple_buddy_icons_set_account_icon(PurpleAccount* account, guchar* icon_data, size_t icon_len);
66         time_t purple_buddy_icons_get_account_icon_timestamp(PurpleAccount* account);
67         gboolean purple_buddy_icons_node_has_custom_icon(PurpleBlistNode* node);
68         PurpleStoredImage* purple_buddy_icons_node_find_custom_icon(PurpleBlistNode* node);
69         PurpleStoredImage* purple_buddy_icons_node_set_custom_icon(PurpleBlistNode* node, guchar* icon_data, size_t icon_len);
70         PurpleStoredImage* purple_buddy_icons_node_set_custom_icon_from_file(PurpleBlistNode* node, const(gchar)* filename);
71         gboolean purple_buddy_icons_has_custom_icon(PurpleContact* contact);
72         PurpleStoredImage* purple_buddy_icons_find_custom_icon(PurpleContact* contact);
73         PurpleStoredImage* purple_buddy_icons_set_custom_icon(PurpleContact* contact, guchar* icon_data, size_t icon_len);
74         void purple_buddy_icons_set_caching(gboolean caching);
75         gboolean purple_buddy_icons_is_caching();
76         void purple_buddy_icons_set_cache_dir(const(char)* cache_dir);
77         const(char)* purple_buddy_icons_get_cache_dir();
78         void* purple_buddy_icons_get_handle();
79         void purple_buddy_icons_init();
80         void purple_buddy_icons_uninit();
81         void purple_buddy_icon_get_scale_size(PurpleBuddyIconSpec* spec, int* width, int* height);
82     }
83 }
84 else
85 {
86     extern( C ) nothrow 
87     {
88 	    alias da_purple_buddy_icon_new = PurpleBuddyIcon* function(PurpleAccount* account, const(char)* username, void* icon_data, size_t icon_len, const(char)* checksum);			
89         alias da_purple_buddy_icon_ref = PurpleBuddyIcon* function(PurpleBuddyIcon* icon);																							
90         alias da_purple_buddy_icon_unref = PurpleBuddyIcon* function(PurpleBuddyIcon* icon);																						
91         alias da_purple_buddy_icon_update = void function(PurpleBuddyIcon* icon);																									
92         alias da_purple_buddy_icon_set_data = void function(PurpleBuddyIcon* icon, guchar* data, size_t len, const(char)* checksum);												
93         alias da_purple_buddy_icon_get_account = PurpleAccount* function(const(PurpleBuddyIcon)* icon);																				
94         alias da_purple_buddy_icon_get_username = const(char)* function(const(PurpleBuddyIcon)* icon);																				
95         alias da_purple_buddy_icon_get_checksum = const(char)* function(const(PurpleBuddyIcon)* icon);																				
96         alias da_purple_buddy_icon_get_data = gconstpointer function(const(PurpleBuddyIcon)* icon, size_t* len);																	
97         alias da_purple_buddy_icon_get_extension = const(char)* function(const(PurpleBuddyIcon)* icon);																				
98         alias da_purple_buddy_icon_get_full_path = char* function(PurpleBuddyIcon* icon);																							
99         alias da_purple_buddy_icons_set_for_user = void function(PurpleAccount* account, const(char)* username, void* icon_data, size_t icon_len, const(char)* checksum);			
100         alias da_purple_buddy_icons_get_checksum_for_user = const(char)* function(PurpleBuddy* buddy);																				
101         alias da_purple_buddy_icons_find = PurpleBuddyIcon* function(PurpleAccount* account, const(char)* username);																
102         alias da_purple_buddy_icons_find_account_icon = PurpleStoredImage* function(PurpleAccount* account);																		
103         alias da_purple_buddy_icons_set_account_icon = PurpleStoredImage* function(PurpleAccount* account, guchar* icon_data, size_t icon_len);										
104         alias da_purple_buddy_icons_get_account_icon_timestamp = time_t function(PurpleAccount* account);																			
105         alias da_purple_buddy_icons_node_has_custom_icon = gboolean function(PurpleBlistNode* node);																				
106         alias da_purple_buddy_icons_node_find_custom_icon = PurpleStoredImage* function(PurpleBlistNode* node);																		
107         alias da_purple_buddy_icons_node_set_custom_icon = PurpleStoredImage* function(PurpleBlistNode* node, guchar* icon_data, size_t icon_len);									
108         alias da_purple_buddy_icons_node_set_custom_icon_from_file = PurpleStoredImage* function(PurpleBlistNode* node, const(gchar)* filename);									
109         alias da_purple_buddy_icons_has_custom_icon = gboolean function(PurpleContact* contact);																					
110         alias da_purple_buddy_icons_find_custom_icon = PurpleStoredImage* function(PurpleContact* contact);																			
111         alias da_purple_buddy_icons_set_custom_icon = PurpleStoredImage* function(PurpleContact* contact, guchar* icon_data, size_t icon_len);										
112         alias da_purple_buddy_icons_set_caching = void function(gboolean caching);																									
113         alias da_purple_buddy_icons_is_caching = gboolean function();																												
114         alias da_purple_buddy_icons_set_cache_dir = void function(const(char)* cache_dir);																							
115         alias da_purple_buddy_icons_get_cache_dir = const(char)* function();																										
116         alias da_purple_buddy_icons_get_handle = void* function();																													
117         alias da_purple_buddy_icons_init = void function();																															
118         alias da_purple_buddy_icons_uninit = void function();																														
119         alias da_purple_buddy_icon_get_scale_size = void function(PurpleBuddyIconSpec* spec, int* width, int* height);
120     }
121 
122     __gshared
123     {
124 	    da_purple_buddy_icon_new purple_buddy_icon_new;
125 	    da_purple_buddy_icon_ref purple_buddy_icon_ref;
126 	    da_purple_buddy_icon_unref purple_buddy_icon_unref;
127 	    da_purple_buddy_icon_update purple_buddy_icon_update;
128 	    da_purple_buddy_icon_set_data purple_buddy_icon_set_data;
129 	    da_purple_buddy_icon_get_account purple_buddy_icon_get_account;
130 	    da_purple_buddy_icon_get_username purple_buddy_icon_get_username;
131 	    da_purple_buddy_icon_get_checksum purple_buddy_icon_get_checksum;
132 	    da_purple_buddy_icon_get_data purple_buddy_icon_get_data;
133 	    da_purple_buddy_icon_get_extension purple_buddy_icon_get_extension;
134 	    da_purple_buddy_icon_get_full_path purple_buddy_icon_get_full_path;
135 	    da_purple_buddy_icons_set_for_user purple_buddy_icons_set_for_user;
136 	    da_purple_buddy_icons_get_checksum_for_user purple_buddy_icons_get_checksum_for_user;
137 	    da_purple_buddy_icons_find purple_buddy_icons_find;
138 	    da_purple_buddy_icons_find_account_icon purple_buddy_icons_find_account_icon;
139 	    da_purple_buddy_icons_set_account_icon purple_buddy_icons_set_account_icon;
140 	    da_purple_buddy_icons_get_account_icon_timestamp purple_buddy_icons_get_account_icon_timestamp;
141 	    da_purple_buddy_icons_node_has_custom_icon purple_buddy_icons_node_has_custom_icon;
142 	    da_purple_buddy_icons_node_find_custom_icon purple_buddy_icons_node_find_custom_icon;
143 	    da_purple_buddy_icons_node_set_custom_icon purple_buddy_icons_node_set_custom_icon;
144 	    da_purple_buddy_icons_node_set_custom_icon_from_file purple_buddy_icons_node_set_custom_icon_from_file;
145 	    da_purple_buddy_icons_has_custom_icon purple_buddy_icons_has_custom_icon;
146 	    da_purple_buddy_icons_find_custom_icon purple_buddy_icons_find_custom_icon;
147 	    da_purple_buddy_icons_set_custom_icon purple_buddy_icons_set_custom_icon;
148 	    da_purple_buddy_icons_set_caching purple_buddy_icons_set_caching;
149 	    da_purple_buddy_icons_is_caching purple_buddy_icons_is_caching;
150 	    da_purple_buddy_icons_set_cache_dir purple_buddy_icons_set_cache_dir;
151 	    da_purple_buddy_icons_get_cache_dir purple_buddy_icons_get_cache_dir;
152 	    da_purple_buddy_icons_get_handle purple_buddy_icons_get_handle;
153 	    da_purple_buddy_icons_init purple_buddy_icons_init;
154 	    da_purple_buddy_icons_uninit purple_buddy_icons_uninit;
155 	    da_purple_buddy_icon_get_scale_size purple_buddy_icon_get_scale_size;
156     }
157 }